<!DOCTYPE html

PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- 
  author :dennis zhuang(killme2008@gmail.com)
  
 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Performance Comparison between Java Memcached Client</title>

</head>
<body>
<h1>Performance Comparison between Java Memcached Client</h1>


<p style="text-align: justify;">There are several memcached clients
written in java programming language, including <a href="http://code.google.com/p/spymemcached">spymemcached</a>,
&nbsp;<a href="http://www.whalin.com/memcached/">Java-MemCached</a> , <a
	href="http://code.google.com/p/xmemcached/">Xmemcached</a> and <a
	href="http://code.google.com/p/memcache-client-forjava/">memcached-client-forjava(A
optimiezed Java-MemCached)</a> etc. <br />The performance numbers of the 4 open
source memcached clients and schooner memcached client are presented
here to help you make choice.</p>



<h2>Test Scenario</h2>

<p style="text-align: justify;">Single memcached server runs on a linux
machine.</p>

<p style="text-align: justify;">A java client connect to memcached
servers,then start numbers of threads to repeat themself to store and
retrive data from memcachd concurrently,write 50% and read 50%,with no
miss rate.</p>

<h2>Test Environment</h2>

<ul>
	<li>Software
	<ul>
		<li>1 Memcached Servers
		<ul>
			<li>Version is 1.4.3, default install configuration.</li>
			<li>Start with option "-p 12000 -m 2048"</li>
		</ul>
		</li>
		<li>Java Client
		<ul>
			<li>JVM Version: Sun JDK 1.6.0_10 x86_64</li>
			<li>Both memcached text protocol and binary protocol is
			covered(if supported).
			<li>Schoonermemcached 1.0.2, max connection number eq thread number. (binary/udp
			protocol supported)</li>
			<li>xmemcached 1.2.0 stable, connection pool size eq thread number. (binary protocol supported)</li>
			<li>Spymemcached 2.5rc1,default configuration. (binary protocol
			supported)</li>
			<li>Whalin java client 2.0.1, max connection number eq thread number.</li>
			<li>Asfmemcached 2.5.2, max connection number eq thread number.</li>
			<li>JVM args: -server -Xmx1024m</li>
			<li>Xmemcached and Spymemcached are asynchronized implementations.So they have to set
			operation timeout,both are set to 3 seconds.</li>
		</ul>
		</li>
	</ul>
	</li>
	<li>Hardware
	<ul>
		<li>Server
		<ul>
			<li>CPU: 8 x Intel(R) Xeon(R) CPU X5450 @ 3.00GHz</li>
			<li>O/S: 2.6.28.9 x86_64 GNU/Linux (CentOS release 5.2)</li>
			<li>RAM: 50 GiB</li>
			<li>NIC: 10G QLogic network</li>
		</ul>
		</li>
		<li>Client (Hostname: Serpent)
		<ul>
			<li>CPU: 8 x Intel(R) Xeon(R) CPU X5450 @ 3.00GHz</li>
			<li>O/S: 2.6.26.5 x86_64 GNU/Linux (CentOS release 5.2)</li>
			<li>RAM: 16 GiB</li>
			<li>NIC: 10G QLogic network</li>
		</ul>
		</li>
	</ul>
	</li>
</ul>

<h2>Test Result</h2>

<h3>Client and Servers on Different Machines</h3>
<p>
<h3>Part1 Compare by threads number</h3>
<img src="images/ThreadNum_throughput_64_mix_string.jpg" />
<br>
<br>
<br>
<br>
<img src="images/ThreadNum_throughput_128_mix_string.jpg" />
<br>
<br>
<br>
<br>
<img src="images/ThreadNum_throughput_512_mix_string.jpg" />
<br>
<br>
<br>
<br>
<img src="images/ThreadNum_throughput_1024_mix_string.jpg" />
<br>
<

<br>
<br>
<br>
<img src="images/ThreadNum_throughput_10240_mix_string.jpg" />
<br>
<br>
<br>
<br>
<img src="images/ThreadNum_throughput_102400_mix_string.jpg" />
<br>
<br>
<br>
<br>
<br>
<p>
<h3>Part2 Compare by value size</h3>
<img src="images/DataSize_throughput_1_mix_string.jpg" />
<br>
<br>
<br>
<br>
<img src="images/DataSize_throughput_8_mix_string.jpg" />
<br>
<br>
<br>
<br>
<img src="images/DataSize_throughput_64_mix_string.jpg" />
<br>
<br>
<br>
<br>
<img src="images/DataSize_throughput_128_mix_string.jpg" />
<br>
<br>
<br>
<br>
</body>
</html>